package main

import (
	"flag"
	"fmt"
	"os"
)

func main() {

	// 定义了一个命令行参数 name，如果命令行参数中没有传 --name 的话，那么程序中 name 的值就是 world
	name := flag.String("name", "world", "specify the name you want to say hi")
	// 命令行参数中不管有没有 --name，这里就打印的 world，应为 flag 还没有 Parse()
	fmt.Println(*name) // => world

	// 解析 flag，如果 --name 有传值，这一行过后，name 就是命令行传的值了
	flag.Parse()
	fmt.Println(*name) // => lixinlei

	fmt.Println("os args is:", os.Args) // => os args is: [./main --name lixinlei]

	fmt.Println("input parameter is:", *name) // =>input parameter is: lixinlei

	fullString := fmt.Sprintf("Hello %s from Go\n", *name)
	fmt.Println(fullString) // => Hello lixinlei from Go
}
